import { publicRoutes, privateRoutes } from '@/router'

export default {
  namespaced: true,
  state: () => ({
    // 路由表 初始的路由
    routes: publicRoutes
  }),
  mutations: {
    // 增加路由
    setRoutes(state, newRoutes) {
      state.routes = [...publicRoutes, ...newRoutes]
    }
  },
  actions: {
    /**
     *  根据权限筛选路由
     * @param {*} context 
     * @param {*} menus  权限数据
     */
    filterRoutes(context, menus) {
      // 筛选过后的  需要通过addRoute 进行添加的路由
      const routes = []
      menus.forEach(key => {
        routes.push(...privateRoutes.filter(item => item.name === key))
      })

      // 所有不匹配的路由 全部跳到404  必须在所有的路由最后
      routes.push({
        path: '/:catchAll(.*)',
        redirect: '/404'
      })

      context.commit('setRoutes', routes)
      return routes
    }
  }
}